package hanlen.mq.starter.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.redisson.client.codec.Codec;
import org.redisson.codec.FstCodec;

/**
 * @author <a href="mailto:1067521725@qq.com">yeweidong</a>
 * @version 1.0
 * @Description redis消息订阅(非持久化, 仅用于允许消息丢失的业务场景)
 * @date 2015年01月25日
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RedisSubscribe {

    /**
     * 队列名
     * 不需要包含环境和应用前缀,和RedisQueue不可重复
     *
     * @return topicName
     */
    String topicName();

    /**
     * 接收的消息类型
     *
     * @return msgType
     */
    Class<?> msgType() default String.class;

    /**
     * 序列化方式
     * <p>
     * 常用的有 SerializationCodec JsonJacksonCodec FstCodec等 pub必须要和sub保持一致,否则会发生异常
     */
    Class<? extends Codec> codec() default FstCodec.class;

}
